package com.gccloud.design.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.gccloud.design.dto.SSPrincipleSaveDto;
import com.gccloud.design.dto.SSPrincipleUpdateDto;
import com.gccloud.design.entity.SdDispatchPrincipleEntity;
import com.gccloud.design.vo.BDValueVo;
import com.gccloud.design.vo.PrincipleAttrVO;
import com.gccloud.design.vo.SdPrincipleVO;
import com.gccloud.starter.common.dto.SearchDTO;
import com.gccloud.starter.core.vo.PageVO;

import java.util.List;

/**
 * @author mengyu
 * @date 2020/12/26 19:01
 */
public interface SdPrincipleService extends IService<SdDispatchPrincipleEntity> {

    /**
     * 分页查询调度原则
     *
     * @param searchDTO 查询DTO
     * @return 分页对象
     */
    PageVO<SdPrincipleVO> getPrinciple(SearchDTO searchDTO);

    /**
     * 新增调度原则
     *
     * @param ssPrincipleSaveDto 调度原则实体类
     */
    void savePrinciple(SSPrincipleSaveDto ssPrincipleSaveDto);

    /**
     * 修改调度原则
     *
     * @param ssPrincipleUpdateDto 调度原则实体类
     */
    void updatePrinciple(SSPrincipleUpdateDto ssPrincipleUpdateDto);

    /**
     * 删除调度原则
     *
     * @param principleId 调度原则标识
     */
    void delPrinciple(int principleId);

    /**
     * 基于业务字典编码查询业务字典项
     *
     * @param typeCode 业务字典编码
     * @return 业务字典项列表
     */
    List<BDValueVo> getBDValue(String typeCode);

    /**
     * 基于调度原则标识查询策略属性
     *
     * @param principleId 调度原则标识
     * @return 策略属性列表
     */
    List<PrincipleAttrVO> getPrinAttr(int principleId);

    /**
     * 基于业务字典编码查询策略属性
     *
     * @param dictCode 业务字典编码
     * @return 列表
     */
    List<PrincipleAttrVO> getAttr(String dictCode);

    /**
     * 分页查询电镀原则
     *
     * @param searchDTO 查询DTO
     * @param ids       主键
     * @return 分页对象
     */
    PageVO<SdPrincipleVO> getPrincipleByIds(SearchDTO searchDTO, String ids);
}
